// Loesung_von_Aufgabe_2.4.5_1_Satellit

float w1; // Winkel Planet
float w2; // Winkel Mond
float w3; // Winkel Satellit

void setup() 
{
  size(400, 400);
}

void draw() 
{
  background(220);

  translate(200, 200); // Verschiebung des Koordinatensystem in die Fenstermitte
  rotate(w1); // Rotation des Koordinatensystems um den Winkel w1

  // Die Sonne sitzt im Ursprung des verschobenen Koordinatensystems
  stroke(255, 0, 0);
  strokeWeight(1);
  fill(255, 220, 0);
  ellipse(0, 0, 40, 40);

  // Der Planet rotiert mit dem Winkel w1 um die Sonne
  noStroke();
  fill(0, 0, 255);
  ellipse(80, 80, 15, 15);

  // Der Ursprung des mit w1 rotierenden Koordinatensystems wird nun in den Mittelpunkt des Planeten verschoben
  translate(80, 80); 
  rotate(w2); // Das so verschobene Koordinatensystem rotiert nun zusätzlich noch mit dem Winkel w2

  // Der Mond rotiert mit dem Winkel w2 um den Planeten und gemeinsam mit ihm mit w1 um die Sonne
  noStroke();
  fill(100);
  ellipse(20, 20, 10, 10);

  // Der Ursprung des Koordinatensystems wird nun in den Mittelpunkt des Mondes verschoben
  translate(20, 20); 
  rotate(w3); // Das so verschobene Koordinatensystem rotiert nun zusätzlich noch mit dem Winkel w3

  // Der Satellit rotiert mit dem Winkel w3 um den Mond und gemeinsam mit ihm um den Planeten
  noStroke();
  fill(255, 0, 0);
  ellipse(8, 8, 5, 5);

  w1 = w1 + 0.01; // Winkel w1 (Planet)
  w2 = w2 + 0.05; // Winkel w2 (Mond)
  w3 = w3 + 0.2; // Winkel w3 (Satellit)
}